﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SmartSapce.ServiceLocation;
using SmartSpace.OA;
using SmartSpace.Web;
using SmartSpace.Workflow;

namespace SmartSpace.WebApp.Modules.Common.Pages
{
    public partial class Home : SsTemplatePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                IWorkflowService service = ServiceLocator.Get<IWorkflowService>();
                ListResult<WorkflowTask> instances = service.GetTasks(User.Identity.Name);
                _ctlListTask.DataSource = instances.Data;
                _ctlListTask.DataBind();

                IOAService oaService = ServiceLocator.Get<IOAService>();
                PagedList<Article> notices = oaService.GetArticles("ARTICLETYPE.NOTICE", 0, 20);
                _ctlListNotice.DataSource = notices;
                _ctlListNotice.DataBind();

                CreateCalendar();
            }
        }

        private void CreateCalendar()
        {
            StringBuilder content = new StringBuilder();
            content.Append("<table style='width:100%;' border='0'>");
            
            #region 创建header
            content.Append("<tr>");
            for (int weekIndex = 0; weekIndex < 7; weekIndex++)
            {
                content.Append("<td style='width:14%;height:70px; text-align:center;'>");
                content.Append("星期" + weekIndex.ToString());
                content.Append("</td>");
            }
            content.Append("</tr>");
            #endregion

            int curYear = DateTime.Now.Year;
            int curMonth = DateTime.Now.Month;
            int curDay = DateTime.Now.Day;
            int totalDays = DateTime.DaysInMonth(DateTime.Now.Year, curMonth);
            bool isFirstRow = true;
            for (int dayIndex = 1; dayIndex <= totalDays; dayIndex++)
            {
                int dayInWeek = (int)(new DateTime(curYear, curMonth, dayIndex).DayOfWeek);

                if (dayInWeek == 0 && !isFirstRow)
                {
                    content.Append("<tr>");
                }
                else if (isFirstRow)
                {
                    content.Append("<tr>");
                    isFirstRow = false;
                    for (int prefixDay = 0; prefixDay < dayInWeek; prefixDay++)
                    {
                        content.Append("<td style='height:70px; text-align:center;'>");
                        content.Append("-");
                        content.Append("</td>");
                    }
                }

                if (dayIndex < curDay)
                {
                    content.Append("<td style='height:70px; text-align:center; background:green;'>");
                    content.Append(dayIndex.ToString());
                    content.Append("</td>");
                }
                else
                {
                    content.Append("<td style='height:70px; text-align:center;'>");
                    content.Append(dayIndex.ToString());
                    content.Append("</td>");
                }

                if (dayIndex == totalDays)
                {
                    for (int suffixDay = dayInWeek + 1; suffixDay <= 6; suffixDay++)
                    {
                        content.Append("<td style='height:70px; text-align:center;'>");
                        content.Append("-");
                        content.Append("</td>");
                    }
                    content.Append("</tr>");
                }
            }

            content.Append("</table>");
            _ctlCalendarContainer.InnerHtml = content.ToString();
        }
    }

    //public class Number2English
    //{
    //    private readonly string[] StrNO = new string[19];
    //    private readonly string[] StrTens = new string[9];
    //    private readonly string[] Unit = new string[8];

    //    public string NumberToString(double Number)
    //    {
    //        string Str;
    //        string BeforePoint;
    //        string AfterPoint;
    //        string tmpStr;
    //        int nBit;
    //        string CurString;
    //        int nNumLen;
    //        Init();
    //        Str = Convert.ToString(Math.Round(Number, 2));
    //        if (Str.IndexOf(".") == -1)
    //        {
    //            BeforePoint = Str;
    //            AfterPoint = "";
    //        }
    //        else
    //        {
    //            BeforePoint = Str.Substring(0, Str.IndexOf("."));
    //            AfterPoint = Str.Substring(Str.IndexOf(".") + 1, Str.Length - Str.IndexOf(".") - 1);
    //        }
    //        if (BeforePoint.Length > 12)
    //        {
    //            return null;
    //        }
    //        Str = "";
    //        while (BeforePoint.Length > 0)
    //        {
    //            nNumLen = Len(BeforePoint);
    //            if (nNumLen % 3 == 0)
    //            {
    //                CurString = Left(BeforePoint, 3);
    //                BeforePoint = Right(BeforePoint, nNumLen - 3);
    //            }
    //            else
    //            {
    //                CurString = Left(BeforePoint, (nNumLen % 3));
    //                BeforePoint = Right(BeforePoint, nNumLen - (nNumLen % 3));
    //            }
    //            nBit = Len(BeforePoint) / 3;
    //            tmpStr = DecodeHundred(CurString);
    //            if ((BeforePoint == Len(BeforePoint).ToString() || nBit == 0) && Len(CurString) == 3)
    //            {
    //                if (Convert.ToInt32(Left(CurString, 1)) != 0 & Convert.ToInt32(Right(CurString, 2)) != 0)
    //                {
    //                    tmpStr = Left(tmpStr, tmpStr.IndexOf(Unit[3]) + Len(Unit[3])) + Unit[7] + " " +
    //                             Right(tmpStr, Len(tmpStr) - (tmpStr.IndexOf(Unit[3]) + Len(Unit[3])));
    //                }
    //                else
    //                {
    //                    tmpStr = Unit[7] + " " + tmpStr;
    //                }
    //            }
    //            if (nBit == 0)
    //            {
    //                Str = Convert.ToString(Str + " " + tmpStr).Trim();
    //            }
    //            else
    //            {
    //                Str = Convert.ToString(Str + " " + tmpStr + " " + Unit[nBit - 1]).Trim();
    //            }
    //            if (Left(Str, 3) == Unit[7])
    //            {
    //                Str = Convert.ToString(Right(Str, Len(Str) - 3)).Trim();
    //            }
    //            if (BeforePoint == Len(BeforePoint).ToString())
    //            {
    //                return "";
    //            }
    //        }
    //        BeforePoint = Str;
    //        if (Len(AfterPoint) > 0)
    //        {
    //            AfterPoint = Unit[5] + " " + DecodeHundred(AfterPoint) + " " + Unit[6];
    //        }
    //        else
    //        {
    //            AfterPoint = Unit[4];
    //        }
    //        return (BeforePoint + " " + AfterPoint).ToUpper();
    //    }

    //    private void Init()
    //    {
    //        if (StrNO[0] != "One")
    //        {
    //            StrNO[0] = "One";
    //            StrNO[1] = "Two";
    //            StrNO[2] = "Three";
    //            StrNO[3] = "Four";
    //            StrNO[4] = "Five";
    //            StrNO[5] = "Six";
    //            StrNO[6] = "Seven";
    //            StrNO[7] = "Eight";
    //            StrNO[8] = "Nine";
    //            StrNO[9] = "Ten";
    //            StrNO[10] = "Eleven";
    //            StrNO[11] = "Twelve";
    //            StrNO[12] = "Thirteen";
    //            StrNO[13] = "Fourteen";
    //            StrNO[14] = "Fifteen";
    //            StrNO[15] = "Sixteen";
    //            StrNO[16] = "Seventeen";
    //            StrNO[17] = "Eighteen";
    //            StrNO[18] = "Nineteen";
    //            StrTens[0] = "Ten";
    //            StrTens[1] = "Twenty";
    //            StrTens[2] = "Thirty";
    //            StrTens[3] = "Forty";
    //            StrTens[4] = "Fifty";
    //            StrTens[5] = "Sixty";
    //            StrTens[6] = "Seventy";
    //            StrTens[7] = "Eighty";
    //            StrTens[8] = "Ninety";
    //            Unit[0] = "Thousand";
    //            Unit[1] = "Million";
    //            Unit[2] = "Billion";
    //            Unit[3] = "Hundred";
    //            Unit[4] = "Only";
    //            Unit[5] = "Dollars and";
    //            Unit[6] = "Cent";
    //            Unit[7] = "";
    //        }
    //    }

    //    private string DecodeHundred(string HundredString)
    //    {
    //        int tmp;
    //        string rtn = "";
    //        if (Len(HundredString) > 0 && Len(HundredString) <= 3)
    //        {
    //            switch (Len(HundredString))
    //            {
    //                case 1:
    //                    tmp = Convert.ToInt32(HundredString);
    //                    if (tmp != 0)
    //                    {
    //                        rtn = StrNO[tmp - 1];
    //                    }
    //                    break;
    //                case 2:
    //                    tmp = Convert.ToInt32(HundredString);
    //                    if (tmp != 0)
    //                    {
    //                        if ((tmp < 20))
    //                        {
    //                            rtn = StrNO[tmp - 1];
    //                        }
    //                        else
    //                        {
    //                            if (Convert.ToInt32(Right(HundredString, 1)) == 0)
    //                            {
    //                                rtn = StrTens[Convert.ToInt32(tmp / 10) - 1];
    //                            }
    //                            else
    //                            {
    //                                rtn =
    //                                        Convert.ToString(StrTens[Convert.ToInt32(tmp / 10) - 1] + " " +
    //                                                         StrNO[Convert.ToInt32(Right(HundredString, 1)) - 1]);
    //                            }
    //                        }
    //                    }
    //                    break;
    //                case 3:
    //                    if (Convert.ToInt32(Left(HundredString, 1)) != 0)
    //                    {
    //                        rtn =
    //                                Convert.ToString(StrNO[Convert.ToInt32(Left(HundredString, 1)) - 1] + " " + Unit[3] +
    //                                                 "AND " +
    //                                                 DecodeHundred(Right(HundredString, 2)));
    //                    }
    //                    else
    //                    {
    //                        rtn = DecodeHundred(Right(HundredString, 2));
    //                    }
    //                    break;
    //                default:
    //                    break;
    //            }
    //        }
    //        return rtn;
    //    }

    //    private string Left(string str, int n)
    //    {
    //        return str.Substring(0, n);
    //    }

    //    private string Right(string str, int n)
    //    {
    //        return str.Substring(str.Length - n, n);
    //    }

    //    private int Len(string str)
    //    {
    //        return str.Length;
    //    }
    //}
}